/***********************************************************************************
Copy right:	    Coffee Tech.
Author:         jiaoyue
Date:           2021-11-23
Description:    提供共享内存组件
***********************************************************************************/

#ifndef SHMEM_H
#define SHMEM_H

#include "pub_define.h"
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>

#define SHM_NAME_SZ 32

union val_t
{

    int bool;
    int a;
    float b;
};

struct shm_param
{
    int id; // 共享内存ID
    size_t size;
    void *addr;                 // 共享内存地址
    char name[SHM_NAME_SZ + 1]; // 共享内存key标识
};

struct std_node
{
    int key;      // 唯一键值
    int type;     // 数据点类型
    int type_dev; // 数据点属于哪个设备，根据网关支持的设备自行定义
    union val_t old_val;
    union val_t new_val;
    int ret; // 默认为-1，采集成功后设置为0，采集失败再置-1
};


int shm_init(struct shm_param *para, const char *name, size_t size);
void *shm_getaddr(struct shm_param *para);
void shm_write(const struct shm_param *para, void *data, size_t size);
int shm_del(const struct shm_param *para);
void dataReporting();    // 获取node.json 放到共享内存中
char *dataAcquisition(); // 从共享内存获取数据

#endif // SHMEM_H
